/**
 * 在一棵树上求到根的第K小距离。首先求出所有到根的距离，然后排序。
 * 树形DP
 */
#include <bits/stdc++.h>
using namespace std;

using pii = pair<int, int>;
using vi = vector<int>;


int N, P, K;
vector<vector<pii>> G;
vector<int> D;

void dfs(int u, int p, int d){
    D[u] = d;
    for(const auto & i : G[u]){
        if(i.first == p) continue;
        dfs(i.first, u, d + i.second);
    }
    return;
}

int proc(){
    D.assign(N + 1, 0);
    dfs(P, 0, 0);
    sort(D.begin(), D.end());
    return D[K + 1];
}


int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);
    int nofkase = 1; 
    // cin >> nofkase;
    for(int kase=1;kase<=nofkase;++kase){
        cin >> N >> P >> K;
        G.assign(N + 1, {});
        for(int a,b,w,i=1;i<N;++i){
            cin >> a >> b >> w;
            G[a].push_back({b, w});
            G[b].push_back({a, w});
        }
        cout << proc() << endl;
    }
    return 0;
}